opencv

https://stackoverflow.com/questions/64249918/how-to-detect-pixel-location-of-object-given-mask-opencv-python

https://www.youtube.com/watch?v=ddSo8Nb0mTw&list=PLzMcBGfZo4-lUA8uGjeXhBUUzPYc6vZRn&index=5

https://www.youtube.com/watch?v=cMJwqxskyek

https://www.youtube.com/watch?v=phCfJiM--f8

https://www.youtube.com/watch?v=0DwzsI6q31w

https://docs.opencv.org/3.4/dd/d49/tutorial_py_contour_features.html

https://rdrr.io/github/mccarthy-m-g/embedr/man/embed_video.html

import cv2
import numpy as np

cap = cv2.VideoCapture('0115_LH39_d1_t4.mp4') # laad de video in 
out = cv2.VideoWriter('output.avi', cv2.VideoWriter_fourcc(*'MJPG'), 30.0, (int(cap.get(3)), int(cap.get(4))))

while True:
  # leest de afbeelding van de video
  ret, frame = cap.read() 
  
  # teken een cirkel zodat de achtergrond niet wordt meegenomen in de mask
  img = cv2.circle(frame, (640,480), 660, (255,255,255), 400) 
  
  # zet afbeelding om van bgr naar hsv zodat opencv er mee kan werken
  hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) 
  
  # bepaal de uiterste kleuren voor de mask
  dark_black = np.array([0, 0, 0]) 
  light_black = np.array([0, 0, 60])
  
  # de mask bepaalt welke kleuren in range zijn en maakt hier een binaire afbeelding van
  mask = cv2.inRange(hsv, dark_black, light_black)
  result = cv2.bitwise_and(frame, frame, mask=mask)
  
  # vind de contouren
  contours, hierarchy = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
  
  if len(contours) !=0:
    for contour in contours: 
      if cv2.contourArea(contour) > 500: 
        (x, y), radius = cv2.minEnclosingCircle(contour) 
        center = (int(x), int(y)) 
        radius = int(radius) 
        cv2.circle(frame, center, radius, (0,255,0), 4)
  
  # sla de video op
  out.write(frame)
  
  # laat de video zien in een popup als watermaze result
  cv2.imshow('watermaze result', frame) 
  
  # als je op q drukt sluit de loop vroegtijdig af
  if cv2.waitKey(1) == ord('q'): 
    break
    
cap.release() 
out.release()
cv2.destroyAllWindows()